package cn.luckdou.commons.utils;


import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

import sun.misc.BASE64Encoder;

import java.io.IOException;

/**
 *
 * 版权所有：2016 项目名称：ImgeBase64
 * 类描述：将图片转化为Base64字符串
 * 创建人：Dadou
 * 创建时间：2016年10月27日
 */
public class ImgToBase64ByOss {
    /**
     * @Title: GetImageStrFromUrl
     * @Description: TODO(将一张网络图片转化成Base64字符串)
     * @param imgURL 网络资源位置
     * @return Base64字符串
     */
    public static String GetImageStrFromUrl(String imgURL) {
        int count = getfileLength(imgURL);
        byte[] data = new byte[count];
        try {
            // 创建URL
            URL url = new URL(imgURL);
            // 创建链接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(10 * 1000);
            InputStream in = conn.getInputStream();
            int readCount = 0; // 已经成功读取的字节的个数
            while (readCount < count) {
                readCount += in.read(data, readCount, count - readCount);
            }
            in.close();
        } catch (IOException e) {
//            e.printStackTrace();
        }
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        // 返回Base64编码过的字节数组字符串
        String encode = encoder.encode(data);
//        System.out.println(encode+"    "+count);
        return encode;
    }

    private static int getfileLength(String imgURL) {
        imgURL+="?x-oss-process=image/info";
        String s = NetUtils.Get(imgURL);
        s=s.substring(s.indexOf("\"FileSize\": {\"value\": \"")+23);
        s=s.substring(0,s.indexOf("\""));
        return Integer.parseInt(s);
    }


}
